<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 数据类型
        // 基本数据类型（简单数据类型）：number string boolean undefined  symbol BigInt
        // 引用数据类型（复杂数据类型）：object
        // symbol 它的值是唯一的 作用：用来解决命名冲突

        let symbol1=Symbol();
        console.log(symbol1)    //symbol
        let symbol2=Symbol();
        console.log(symbol2);  //symbol
        console.log(symbol1 == symbol2);  //false
        console.log(typeof symbol1);  //symbol

        // 变量命名 对象中的属性名
        let obj={};
        obj.name='tom';
        // obj对象 name为key 对象的属性名 'tom' value 对象的属性值
        //                   string                 任意数据类型
        let sex='sex';
        obj[sex]='男';
        console.log(obj);
        obj[symbol1]='nihao';
        console.log(obj);

        let symbol3=Symbol('ysn');
        console.log(symbol3);  //symbol(ysn)

        // BigInt 表示整数 没有位数限制  可以表示任意位数的整数
        // Number 到达一定位数之后 就无法表示 返回infinity
        let num=123;
        console.log(typeof num);  //number
        let num1=123n;
        console.log(typeof num1); //bigint
        let num2=12n;
        console.log(num1 % num2);  //3n  bigint可以进行加减乘除 取模
        console.log(-num1);  //-123n  不能使用+bigint 可以使用-表示负值

        // bigint可以同其他数据类型进行转换吗?
        // number string boolean undefined null
        // bigint如何转换为上面的数据类型
        // 上面的数据类型如何转换为bigint
        // console.log(BigInt(123));  //123n 将number类型转换为bigint类型  
        // console.log(BigInt('123')); //123n  将string类型(必须是整数 不能有小数 不能有其他字符) 转换为bigint类型
        // console.log(BigInt(true)); //1n 将boolean类型转换为bigint类型
        // console.log(BigInt(false)); //0n true 1n false 0n
        // console.log(BigInt(undefined)); undefined报错
        // console.log(BigInt(null));  null报错

        // console.log(Number(12123n)); Number可以将bigint转换为number类型
        // console.log(String(234n)); 234  String可以将bigint类型转换为string类型但是n会消失
        // console.log(Boolean(2n)); Boolean可以将bigint类型转换为布尔值 1n true 0n false
        // console.log(Boolean(0n)); false
        // console.log(Boolean(12n)); true
        // console.log(!0n); true
        // console.log(!1n); false
    </script>
</body>
</html>